package com.Demo;

/**
 * @author jiangjingbo
 * @version V1.0
 * @Project java2203
 * @Package com.Demo
 * @Description:
 * @Date 2022/6/29 11:54
 */

import com.alibaba.fastjson.JSON;
import com.jiang.pojo.User;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Pipeline;

import java.util.Date;

/**
 * 以json 格式字符串到redis服务器存取数据
 */
public class JedisTest3 {
    @Test
    public void testjsonset() {
        //连接redis
        Jedis jedis = new Jedis("192.168.200.129", 6379);
        //准备json格式字符串类型的value数据
        User user = new User(1, "饕鬄", new Date());
        //将java对象转换为json数据
        String value = JSON.toJSONString(user);
        //将数据放入jedis
        jedis.set("userjson",value);
        System.out.println(value);
        //关闭资源
        jedis.close();
    }

    /**
     * 获取redis中的json格式字符串
     */
    @Test
    public void testjsonget() {
        //连接redis
        Jedis jedis = new Jedis("192.168.200.129", 6379);

        //获取Jredis中的json对象
        String userjson = jedis.get("userjson");
        User user = JSON.parseObject(userjson, User.class);
        System.out.println("============"+user);
        jedis.close();
    }

    @Test
    public void testPool() {
        GenericObjectPoolConfig jectPool = new GenericObjectPoolConfig();
        jectPool.setMaxTotal(50);//最大连接数
        jectPool.setMinIdle(10);//最小空闲数
        jectPool.setMaxIdle(10);//最大空闲数
        jectPool.setMaxWaitMillis(3000);//超过时间 也就是多久没有用连接 连接超时

        //创建连接池
        JedisPool jedisPool = new JedisPool(jectPool, "192.168.200.129", 6379);
        //通过连接池获取jedis对象
        Jedis resource = jedisPool.getResource();

        //获取redis中的数据
        resource.set("key1","10");
        String key1 = resource.get("key1");
        System.out.println("key1======"+key1);
        resource.close();

    }

    @Test
    public void testPipiLine() {
        //创建连接池
        JedisPool jedisPool = new JedisPool("192.168.200.129", 6379);
        //获取jedis对象
        Jedis resource = jedisPool.getResource();
        //创建管道
        Pipeline pipelined = resource.pipelined();
        //将需要的执行的命令放入管道中
        for(int i = 0; i <= 100000; i++) {
            pipelined.incr("key1");
        }
        //统一执行
        pipelined.syncAndReturnAll();

        //6. 释放资源
        pipelined.close();
    }
}
